The present invention relates to the field of computer graphics, and in particular to methods and apparatus for interpolating model poses of computer graphics objects. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking rendered images and animations.
In computer-generated animation, an object's appearance is defined by a three-dimensional computer model. To appear realistic, the computer model of an object is often extremely complex, having millions of surfaces and tens of thousands of attributes. A pose is the realized geometry of a model. Animators often specify poses of models at one or more discrete moments of time, referred to as keyframes. Animation software tools then determine the poses of models at any intermediate moments of time, referred to as in-between or intermediate frames.
Due to the complexity involved with animating models, particularly character models with hundreds or thousands of degrees of freedom, animation tools often rely on animation variables to define the animation of objects. Animators typically define animation variable values, such as joint angles and joint positions, at specific frames or discrete moments of time. The value of an animation variable along with its associated time is referred to as a control knot. Animation tools often interpolate animation variable values between control knots to determine the poses of models at other frames or moments of time. The values of animation variables in any given frame define the pose or realized geometry of a model, which may include the position, orientation, surface and/or volume deformation, and potentially other properties of the character model.
The pose of some types of models may be defined using complex hierarchies of joints. For example, a character model can include a shoulder joint connected between a torso model and an upper arm model, an elbow joint connected between the upper arm model and a lower arm model, a wrist joint connected between the lower arm model and a hand model, and several finger joints connected between the hand model and finger models. The pose or position and orientation of all of these portions of the character model's arm is specified at least in part by the joint rotation angles and/or joint positions of the shoulder joint, the elbow joint, the wrist joint, and the finger joints.
Animators can specify the joint rotation angles of joints or other parameters or properties of a model directly to define a pose of a character model. This is referred to as forward kinematics. However, this is often time consuming and unintuitive, especially for limbs and other objects composed of numerous joints or complex parameters.
Inverse kinematics allows animators to specify all or a portion of a pose in terms of desired joint positions for a portion of the joints or other desired characteristics of all or a portion of a model. The animation tools then determine the specific joint rotation angles, joint positions, and other parameters, such as scaling or shearing, for the other joints required to achieve this pose. For example, an animator may specify that the hand of character model should contact another object in a scene. The animation tools then calculate the joint rotation angles for the shoulder, elbow, and wrist joints necessary for the hand to contact the object as specified. Animation tools often take into account constraints, such as limits on the range of joint rotations, to ensure that the final pose of the model appears realistic. For example, an elbow joint may be constrained to a range of 150 degrees of rotation to prevent the animation tools from setting this joint's rotation angles outside of the range of motion possible in human anatomy.
Although inverse kinematics often makes posing character models easier, animation can be a problem with inverse kinematics. A user may typically specify the poses of a model in two or more keyframes. The animation tools then determine the pose of the model for one or more intermediate frames to produce animation. Interpolation is one technique for determining the pose of a model in an intermediate frame. Inverse kinematics may be used to determine all or a portion of the poses in keyframes. Linear or non-linear interpolation is then used to determine pose attributes such as joint angles at the intermediate frames. For the keyframes, inverse kinematics ensures that all the joint constraints are satisfied. However, typical linear or non-linear interpolation techniques do not satisfy these constraints at intermediate frames. Thus, even if the starting and ending positions of a model in the keyframes appear normal and satisfy the constraints, typical interpolation techniques often produce awkward and unrealistic poses in the intermediate frames, often with many temporal discontinuities or sudden “popping” between different poses.
Another animation technique applies an inverse kinematic techniques simulation over time to determine the poses of a model in intermediate frames. In this approach, the animation tool applies inverse kinematics techniques to consider the joint constraints in each intermediate frame. Although this approach produces fluid and realistic looking animations, this approach requires animation tools to start its calculations at the first frame of animated sequence and incrementally determine the pose at every subsequent frame up to the desired intermediate frame. If anything in the animation sequence in changed, the entire sequence of calculations must be repeated from the beginning. Because animators often make incremental adjustments to fine-tune their animations, simulating inverse kinematics over time makes the process of fine-tuning animation difficult and time-consuming for animators.
There is also an unmet need for a system and method to animate models using inverse kinematics in a realistic and time-coherent manner without requiring computationally expensive incremental simulations of long sequences of animation frames.